1. Field of the Invention
The present invention relates to computing devices and, more particularly, to updating firmware data in portable computing devices.
2. Description of the Related Art
Computing devices typically perform a boot-up procedure to initiate hardware and to acquire program code to be executed. The program code being acquired can include software and/or firmware. Often, at least an initial portion of program code, known as initial boot-up code, is stored in non-volatile memory. The boot-up procedure retrieves the initial boot-up code and uses such to partially boot the computing device. Once partially booted, other portions of the boot-up code can be obtained from volatile or non-volatile memory.
Since the initial boot-up code is stored in non-volatile memory, its storage is relatively permanent. However, certain types of non-volatile memory can be altered, such as re-written to store new data. Examples of these types of non-volatile memories, which are known as programmable non-volatile memories, include EEPROM and FLASH.
Accordingly, when a computing device is shipped to a customer, the initial boot code is fixed in non-volatile memory. However, the manufacturer of the computing device may want to subsequently change the initial boot code on the computing device. In many cases this requires the computing device to be returned to a service center. In the case of personal computers, a knowledgeable consumer can download via the Internet or read from disk a replacement BIOS program and then “flash” the non-volatile memory in the personal computer to thereby update the BIOS program. Personal computers are able to boot-up in alternate ways, such as from a disk drive. However, for computing devices without alternative ways to boot-up, a failure of the storage of the new boot code to the non-volatile memory renders the computing device inoperative. For example, a failure can occur if the computing device “hangs” or “locks-up” during the storage of the new boot code, or if a loss of power occurs during the storage of the new boot code. Hence, updating software in computing devices other than personal computers is conventionally either impossible or, if possible, burdensome.
Thus, there is a need to facilitate updates to program code within a computing device.